import { DECREMENT, INCREMENT } from "../actions/constants"

/**
 * state 初始值
 */
const initialState = {
  count: 32, // 计数数量的状态数据
}

/**
 * reducer 纯函数，用于实现状态的同步更新，返回更新后的新状态数据
 * @param {*} state 更新前的状态数据 
 * @param {*} action 描述发生了什么，有 type 与 payload 属性
 * @returns 
 */
const reducer = (state = initialState, { type, payload }) => {
  switch (type) {
    case INCREMENT: // 加数量
      const copy = { ...state } // 复制 state 值
      copy.count += payload.num // 对复制后的副本进行更新
      return copy // 返回更新后的新状态数据
    case DECREMENT: // 减数量
      const cp = { ...state } // 复制 state 值
      cp.count -= payload.num // 对复制后的副本进行更新
      return cp // 返回更新后的新状态数据
    default:
      return state
  }
}

export default reducer
